#include<cairo.h>
#include<math.h>// M_PI

int
main(int argc, char* argv[]){
  cairo_surface_t *sfc = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 1600, 1000);
  cairo_t * cr = cairo_create(sfc);

  cairo_move_to(cr, 100, 100);
  cairo_line_to(cr, 1000, 100);

  // 绘制圆弧
  cairo_arc(cr, 800, 500,// 对应圆的中心坐标为(800,500)
    100,// 对应圆的半径为100
    0,// 圆弧起始点的弧度为0
    M_PI);// 圆弧结束点的弧度为pi
  // 弧度与角度的转换公式为`360角度 = 2pi弧度`=>`1角度 = pi/180弧度`

  // 因为起始点大于结束点，所以为结束点加上4*M_PI(2个圆)的弧度，始其刚好比起始点弧度大。
  // 于是下面这行等同于：`cairo_arc(cr, 800, 500, 150, 2.5*M_PI, 4*M_PI+1);`
  cairo_arc(cr, 800, 500, 150, 2.5*M_PI, 1);

  // 开始一个新的子路径绘制，但是不会为新子路径设置当前point
  cairo_new_sub_path(cr);
  cairo_arc(cr, 800, 500, 300, 0.1, 0);

  cairo_stroke(cr);

  cairo_surface_write_to_png(sfc, "c.png");

  return 0;
}//main